package br.com.vdn.vo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Proxy;
import org.hibernate.annotations.Type;

import br.com.util.tipodado.CEP;
import br.com.util.tipodado.DataHora;
import br.com.util.tipodado.Flag;
import br.com.util.tipodado.Inteiro;
import br.com.util.tipodado.InteiroLongo;
import br.com.util.tipodado.Texto;

@Entity
@Table(name="TBEDR")
@Proxy(lazy=true)
public class EnderecoVo
{
	
	@Id
	@Column(name = "EDRCD")
	@GeneratedValue(generator = "InteiroSequenceGenerator")
	@GenericGenerator(name = "InteiroSequenceGenerator", strategy = "br.com.util.tipodado.hibernate.generator.InteiroSequenceGenerator", parameters = { @Parameter(name = "sequence", value = "SQEDR") })
	@Type(type = "br.com.util.tipodado.hibernate.InteiroLongoUT")
	private InteiroLongo codigo;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "CLNCD")
	private ClienteVo clienteVo;
	
	@Column(name = "EDRDS")
	@Type(type = "br.com.util.tipodado.hibernate.TextoUT")
	private Texto descricao;
	
	@Column(name = "EDRCEP")
	@Type(type = "br.com.util.tipodado.hibernate.CepUT")
	private CEP cep;
	
	@Column(name = "EDRLGR")
	@Type(type = "br.com.util.tipodado.hibernate.TextoUT")
	private Texto logradouro;
	
	@Column(name = "EDRNR")
	@Type(type = "br.com.util.tipodado.hibernate.InteiroUT")
	private Inteiro numero;
	
	@Column(name = "EDRCMP")
	@Type(type = "br.com.util.tipodado.hibernate.TextoUT")
	private Texto complemento;
	
	@Column(name = "EDRBRR")
	@Type(type = "br.com.util.tipodado.hibernate.TextoUT")
	private Texto bairro;
	
	@Column(name = "EDRCDD")
	@Type(type = "br.com.util.tipodado.hibernate.TextoUT")
	private Texto cidade;
	
	@Column(name = "EDRUF")
	@Type(type = "br.com.util.tipodado.hibernate.TextoUT")
	private Texto uf;
	
	@Column(name = "EDRFGATV")
	@Type(type = "br.com.util.tipodado.hibernate.FlagUT")
	private Flag flagAtivo;
	
	@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "USRCDINC")
	private UsuarioVo usuarioInclusaoVo;
	
	@Column(name = "USRDTINC")
	@Type(type = "br.com.util.tipodado.hibernate.DataHoraUT")
	private DataHora dataInclusao;
	
	@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "USRCDALT")
	private UsuarioVo usuarioAlteracaoVo;
	
	@Column(name = "USRDTALT")
	@Type(type = "br.com.util.tipodado.hibernate.DataHoraUT")
	private DataHora dataAlteracao;
	
	public InteiroLongo getCodigo()
	{
		return codigo;
	}

	public void setCodigo(InteiroLongo codigo)
	{
		this.codigo = codigo;
	}

	public ClienteVo getClienteVo()
	{
		return clienteVo;
	}

	public void setClienteVo(ClienteVo clienteVo)
	{
		this.clienteVo = clienteVo;
	}

	public Texto getDescricao()
	{
		return descricao;
	}

	public void setDescricao(Texto descricao)
	{
		this.descricao = descricao;
	}

	public CEP getCep()
	{
		return cep;
	}

	public void setCep(CEP cep)
	{
		this.cep = cep;
	}

	public Texto getLogradouro()
	{
		return logradouro;
	}

	public void setLogradouro(Texto logradouro)
	{
		this.logradouro = logradouro;
	}

	public Inteiro getNumero()
	{
		return numero;
	}

	public void setNumero(Inteiro numero)
	{
		this.numero = numero;
	}

	public Texto getComplemento()
	{
		return complemento;
	}

	public void setComplemento(Texto complemento)
	{
		this.complemento = complemento;
	}

	public Texto getBairro()
	{
		return bairro;
	}

	public void setBairro(Texto bairro)
	{
		this.bairro = bairro;
	}

	public Texto getCidade()
	{
		return cidade;
	}

	public void setCidade(Texto cidade)
	{
		this.cidade = cidade;
	}

	public Texto getUf()
	{
		return uf;
	}

	public void setUf(Texto uf)
	{
		this.uf = uf;
	}

	public UsuarioVo getUsuarioInclusaoVo()
	{
		return usuarioInclusaoVo;
	}

	public void setUsuarioInclusaoVo(UsuarioVo usuarioInclusaoVo)
	{
		this.usuarioInclusaoVo = usuarioInclusaoVo;
	}

	public DataHora getDataInclusao()
	{
		return dataInclusao;
	}

	public void setDataInclusao(DataHora dataInclusao)
	{
		this.dataInclusao = dataInclusao;
	}

	public UsuarioVo getUsuarioAlteracaoVo()
	{
		return usuarioAlteracaoVo;
	}

	public void setUsuarioAlteracaoVo(UsuarioVo usuarioAlteracaoVo)
	{
		this.usuarioAlteracaoVo = usuarioAlteracaoVo;
	}

	public DataHora getDataAlteracao()
	{
		return dataAlteracao;
	}

	public void setDataAlteracao(DataHora dataAlteracao)
	{
		this.dataAlteracao = dataAlteracao;
	}

	public Flag getFlagAtivo()
	{
		return flagAtivo;
	}

	public void setFlagAtivo(Flag flagAtivo)
	{
		this.flagAtivo = flagAtivo;
	}

}
